;; 图形界面相关的设置

;; tab-line
(global-tab-line-mode)
(global-set-key (kbd "C-S-<tab>") 'tab-line-switch-to-prev-tab)
(global-set-key (kbd "C-<tab>") 'tab-line-switch-to-next-tab)

;; fonts and theme
(defun my/font-setup ()
  ;;; 字体设置
  ;; GC 时不要压缩字体
  (setq inhibit-compacting-font-caches t)
  ;; 如果使用了 custom.el 在这里的设置会被 custom.el 里的设置覆盖。
  ;; (setq my/default-font "霞鹜文楷等宽"
  ;;       my/cjk-font "霞鹜文楷等宽")
  (setq my/default-font "等距更纱黑体 SC"
        my/cjk-font "等距更纱黑体 SC")
  ;; (setq my/default-font "Maple Mono NF CN"
  ;;       my/cjk-font "Maple Mono NF CN")
  ;; (setq my/default-font "Simsun"
  ;;       my/cjk-font "Simsun")
  ;; 设置默认字体,set-face-font调用set-face-attribute
  (if my/is-win
      (set-face-font 'default (font-spec :size 18 :family my/default-font))
    (set-face-font 'default (font-spec :size 18 :family my/default-font)))
  ;; 设置行间距。如果设置为整数，则行间距为像素个数。如果是浮点数则为相对倍数
  (setq-default line-spacing 0.1)

  ;; modeline fonts
  ;; (if (facep 'mode-line-active)
  ;;     (set-face-font 'mode-line-active
  ;;                    (font-spec :family "Iosevka" :size 18)) ;; for 29+
  ;;   (set-face-font 'mode-line
  ;;                  (font-spec :family "Iosevka" :size 18)))

  ;; set font for symbols
  (set-fontset-font
   t 'symbol
   (font-spec :family
              (cond
               ((member "Segoe UI Symbol" (font-family-list)) "Segoe UI Symbol")
               ((member "Apple Symbols" (font-family-list)) "Apple Symbols")
               ((member "Symbola" (font-family-list)) "Symbola")
               ))
   nil 'prepend)

  ;; 设置 emoji 字体
  (set-fontset-font
   t 'emoji
   (font-spec :family
              (cond
               ((member "Segoe UI Emoji" (font-family-list)) "Segoe UI Emoji")
               ((member "Apple Color Emoji" (font-family-list)) "Apple Color Emoji")
               ((member "Noto Color Emoji" (font-family-list)) "Noto Color Emoji")
               ))
   nil 'prepend)

  ;; 设置汉字和日韩文字使用的字体
  ;; 为防止 symbol 和 emoji 字体设置覆盖，将汉字字体设置放最到后
  (dolist (charset '(han cjk-misc))
    (set-fontset-font t charset (font-spec :family my/cjk-font)))
  )
;; 😀😁😂🤣😊😆😍😗😙😎
;; ︴ ｜ 〕 ⫷ ▶⫷⫸⫸⫸㈦①】︱⁐⁀⁔⏕⏔⏖⏓⏒
;; ᵃ ᶠ ᵏ ᵖ ᵛ ᴬ ᴴ ᴹ ᵀ

(defun my/ui-setup ()
  (size-indication-mode t)                    ; 在状态栏显示文件大小
  (column-number-mode t)                      ; 状态栏显示列号
  ;; 在状态栏显示日期时间
  (setq display-time-string-forms
        '((propertize (concat "[" (substring year -2) "-" month "-" day
                              " " 24-hours ":" minutes "]"))))
  (display-time-mode 1)
  ;; 显示行号
  ;; 不使用全局模式，省的随便开个 Buffer 都是行号。
  (add-hook 'find-file-hook #'display-line-numbers-mode)
  ;; 高亮显示行号
  (set-face-foreground 'line-number-current-line "black")
  (set-face-background 'line-number-current-line "#909090")

  (setq-default cursor-type t)         ; 设置光标样式 bar, box
  ;; (scroll-bar-mode -1)                    ; 关闭滚动条
  (menu-bar-mode -1)                      ; 关闭菜单栏
  (tool-bar-mode -1)                      ; 关闭工具栏

  (if (display-graphic-p)                 ; GUI 相关的设置
      (progn
        (set-background-color "#F0FaF0")
        ;; (custom-set-variables
        ;;  '(custom-enabled-themes '(wombat)))
        (my/font-setup)                         ; 设置字体
        ;; 设置窗口位置为屏幕左上角(lef,top)
        (set-frame-position nil 0 0)
        ;; 设置宽和高
        (set-frame-size nil 85 (if my/is-win 33 30))
        ;; 设置emacs透明
        ;; (set-frame-parameter nil 'alpha '(95))
        ;; 设置窗口标题栏
        ;; (setq frame-title-format
        ;;       '(buffer-file-name "%b - [%f] - Emacs" "%b - Emacs"))
        )
    (progn (load-theme 'modus-vivendi t))
    ))

(add-hook 'window-setup-hook #'my/ui-setup)
(add-hook 'server-after-make-frame-hook #'my/ui-setup)

(provide 'init-ui)
